package com.jtny.nytb.valid.annotation;



import com.jtny.nytb.valid.validator.ValueValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

import static java.lang.annotation.ElementType.*;

/**
 * 校验包含类选值注解
 * 在请求进入方法前校验 类似于 {@link javax.validation.constraints.NotBlank} 使用
 *
 * @author 智慧能源中心 - 伍天宇
 * @package com.jtny.nytb.valid.annotation
 * @fileName ValueValid.java
 * @createTime 2023年09月15日 15:13
 * @Copyright© 2023 jtny
 * 江投能源技术研究院 版权所有
 */
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(ValueValid.List.class)
@Constraint(validatedBy = ValueValidator.class)
@Documented
public @interface ValueValid {
    String message() default "参数必须为指定值";

    String[] strValues() default {};

    int[] intValues() default {};

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};


    /**
     * 注意：默认是不开启校验的
     *
     * @return boolean
     */
    boolean ignoreEmpty() default true;

    @Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @interface List {
        ValueValid[] value();
    }

}
